﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Quick.CodeGenerator.Model
{
    /// <summary>
    /// 代码生成 配置
    /// </summary>
    public class CodeGeneratorSetting
    {
        /// <summary>
        /// 需要生成的数据库表列表
        /// </summary>
        public List<string> TableNames { get; set; }
        /// <summary>
        /// 项目名称
        /// </summary>
        public string Project { get; set; }
        /// <summary>
        /// 是否创建 Model 命名空间
        /// </summary>
        public bool HasEntityNamespace { get; set; }
        /// <summary>
        /// Model 命名空间
        /// </summary>
        public string EntityNamespace { get; set; }

        /// <summary>
        /// 是否创建 IData 命名空间
        /// </summary>
        public bool HasContractsNamespace { get; set; }
        /// <summary>
        /// IData 命名空间
        /// </summary>
        public string ContractsNamespace { get; set; }

        /// <summary>
        /// 是否创建 Data 命名空间
        /// </summary>
        public bool HasRepositoryNamespace { get; set; }
        /// <summary>
        /// Data 命名空间
        /// </summary>
        public string RepositoryNamespace { get; set; }

        /// <summary>
        /// 是否创建 IDomain 命名空间
        /// </summary>
        public bool HasIDomainNamespace { get; set; }
        /// <summary>
        /// IServices 命名空间
        /// </summary>
        public string IDomainNamespace { get; set; }

        /// <summary>
        /// 是否创建 IDomain 命名空间
        /// </summary>
        public bool HasDomainNamespace { get; set; }
        /// <summary>
        /// Services 命名空间
        /// </summary>
        public string DomainNamespace { get; set; }

        /// <summary>
        /// Data构造函数中使用的Db链接名
        /// </summary>
        public string DbConnectionStringName { get; set; }

        /// <summary>
        /// 排序栏位
        /// </summary>
        public string Sequence { get; set; }
        /// <summary>
        /// 排序方式
        /// </summary>
        public string OrderBy { get; set; }
        
        /// <summary>
        /// 是否有软删除栏位
        /// </summary>
        public bool HasSoftDelete { get; set; }
        /// <summary>
        /// 软删除栏位
        /// </summary>
        public string SoftDeleteColumn { get; set; }
        /// <summary>
        /// 软删除栏位 有效值
        /// </summary>
        public string SoftDeleteEfficacious { get; set; }
        /// <summary>
        /// 软删除栏位 无效值
        /// </summary>
        public string SoftDeleteInvalid { get; set; }
        /// <summary>
        /// 代码生成存储路径
        /// </summary>
        public string SavePath { get; set; }
        /// <summary>
        /// 创建者
        /// </summary>
        public string Creator { get; set; }
    }
}
